From c5b3e247f18bcb37b188d370b25c1f40bcb8f991 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Kol=C3=A5s?= Date: Wed, 2 May 2012 23:48:54 +0200 Subject: [PATCH] only enable sse-fixups when not on 64bit --- babl/babl-cpuaccel.c | 4 ++++ babl/babl-cpuaccel.h | 3 ++- extensions/sse-fixups.c | 3 ++- tests/float-to-8bit.c | 5 +++++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/babl/babl-cpuaccel.c b/babl/babl-cpuaccel.c index ee12fd6..287c41e 100644 --- a/babl/babl-cpuaccel.c +++ b/babl/babl-cpuaccel.c @@ -490,6 +490,10 @@ cpu_accel (void) accel = arch_accel (); +#if defined(ARCH_X86_64) + accel |= BABL_CPU_ACCEL_X86; +#endif + return (BablCpuAccelFlags) accel; #else /* !HAVE_ACCEL */ diff --git a/babl/babl-cpuaccel.h b/babl/babl-cpuaccel.h index c95af91..e701e2a 100644 --- a/babl/babl-cpuaccel.h +++ b/babl/babl-cpuaccel.h @@ -32,7 +32,8 @@ typedef enum BABL_CPU_ACCEL_X86_SSE3 = 0x02000000, /* powerpc accelerations */ - BABL_CPU_ACCEL_PPC_ALTIVEC = 0x04000000 + BABL_CPU_ACCEL_PPC_ALTIVEC = 0x04000000, + BABL_CPU_ACCEL_X86_64 = 0x00100000 } BablCpuAccelFlags; diff --git a/extensions/sse-fixups.c b/extensions/sse-fixups.c index b44bb5e..fdcc06f 100644 --- a/extensions/sse-fixups.c +++ b/extensions/sse-fixups.c @@ -228,7 +228,8 @@ init (void) NULL); if ((babl_cpu_accel_get_support () & BABL_CPU_ACCEL_X86_MMX) && - (babl_cpu_accel_get_support () & BABL_CPU_ACCEL_X86_SSE)) + (babl_cpu_accel_get_support () & BABL_CPU_ACCEL_X86_SSE) && + !(babl_cpu_accel_get_support () & BABL_CPU_ACCEL_X86_64)) { o (rgbaF_linear, rgb8_linear); o (rgbaF_linear, rgba8_linear); diff --git a/tests/float-to-8bit.c b/tests/float-to-8bit.c index f415e96..17300a3 100644 --- a/tests/float-to-8bit.c +++ b/tests/float-to-8bit.c @@ -31,7 +31,11 @@ main (int argc, { int OK = 1; babl_init (); + int i = 0; + + for (i = 0; i < 400000; i++) + { { float in[][4] = {{ 0.21582, -0.55, -0.14, 1.0 }, {0.2, 0.3, 0.5, 0.6}, {0.0, 1.0, 2.0, 3.0}}; unsigned char out[][4] = {{ 55, 0, 0, 255 }, {51,77,128,153}, {0,255,255,255}}; @@ -91,6 +95,7 @@ main (int argc, babl_format("R'G'B'A u8"), in, out); } + } babl_exit (); return !OK; -- 2.30.2